From f9a9ee50ad2e747aa741ba9016ded95b70bb568d Mon Sep 17 00:00:00 2001 From: "laudney@eclipse.(none)" Date: Thu, 13 Nov 2003 01:46:28 +0000 Subject: [PATCH] bitkeeper revision 1.598 (3fb2e274GU15kd_YoIRRIuuWRWScng) Fixes for Xen console buffer ring. --- BitKeeper/etc/logging_ok | 1 + tools/internal/xi_read_console_ring.c | 6 +++--- xen/common/console.c | 8 ++++++-- xen/common/dom0_ops.c | 2 +- xen/common/kernel.c | 1 - xen/include/hypervisor-ifs/dom0_ops.h | 2 +- xen/include/xeno/console.h | 4 ++-- 7 files changed, 14 insertions(+), 10 deletions(-) diff --git a/BitKeeper/etc/logging_ok b/BitKeeper/etc/logging_ok index 7c732bc73c..461b17a97a 100644 --- a/BitKeeper/etc/logging_ok +++ b/BitKeeper/etc/logging_ok @@ -17,6 +17,7 @@ kaf24@labyrinth.cl.cam.ac.uk kaf24@plym.cl.cam.ac.uk kaf24@scramble.cl.cam.ac.uk kaf24@striker.cl.cam.ac.uk +laudney@eclipse.(none) lynx@idefix.cl.cam.ac.uk rac61@labyrinth.cl.cam.ac.uk rgr22@boulderdash.cl.cam.ac.uk diff --git a/tools/internal/xi_read_console_ring.c b/tools/internal/xi_read_console_ring.c index 9f28823c20..eaa73aed92 100644 --- a/tools/internal/xi_read_console_ring.c +++ b/tools/internal/xi_read_console_ring.c @@ -7,7 +7,7 @@ #define CONSOLE_RING_SIZE 16392 static char *argv0 = "read_console_ring"; -static long read_console_ring(char *str, unsigned count) +static long read_console_ring(unsigned long str, unsigned count) { int ret; dom0_op_t op; @@ -18,7 +18,7 @@ static long read_console_ring(char *str, unsigned count) ret = do_dom0_op(&op); if (ret > 0) { - *(str + ret) = '\0'; + *((char *)str + ret) = '\0'; } return ret; @@ -36,7 +36,7 @@ int main(int argc, char **argv) return 1; } - if ( read_console_ring(str, CONSOLE_RING_SIZE) < 0 ) { + if ( read_console_ring((unsigned long)str, CONSOLE_RING_SIZE) < 0 ) { printf("Read console ring error.\n"); printf("%s", str); return 1; diff --git a/xen/common/console.c b/xen/common/console.c index 4836dc91d1..f6e3f250bb 100644 --- a/xen/common/console.c +++ b/xen/common/console.c @@ -8,18 +8,22 @@ #include #include +console_ring_t console_ring = { + .len = 0 +}; + void init_console_ring() { console_ring.len = 0; } -long read_console_ring(char *str, unsigned int count) +long read_console_ring(unsigned long str, unsigned int count) { unsigned int len; len = (console_ring.len < count)? console_ring.len : count; - if ( copy_to_user(str, console_ring.buf, len) ) + if ( copy_to_user((char *)str, console_ring.buf, len) ) return -EFAULT; return len; diff --git a/xen/common/dom0_ops.c b/xen/common/dom0_ops.c index a1ac3a41da..0558a1e40b 100644 --- a/xen/common/dom0_ops.c +++ b/xen/common/dom0_ops.c @@ -415,7 +415,7 @@ long do_dom0_op(dom0_op_t *u_dom0_op) case DOM0_READCONSOLE: { - extern long read_console_ring(char *, unsigned int); + extern long read_console_ring(unsigned long, unsigned int); ret = read_console_ring(op.u.readconsole.str, op.u.readconsole.count); } diff --git a/xen/common/kernel.c b/xen/common/kernel.c index 8e2b7a7d49..9f6fb74556 100644 --- a/xen/common/kernel.c +++ b/xen/common/kernel.c @@ -156,7 +156,6 @@ void cmain (unsigned long magic, multiboot_info_t *mbi) } init_serial(); - init_console_ring(); init_vga(); cls(); diff --git a/xen/include/hypervisor-ifs/dom0_ops.h b/xen/include/hypervisor-ifs/dom0_ops.h index 134eb82ddf..770305f6ac 100644 --- a/xen/include/hypervisor-ifs/dom0_ops.h +++ b/xen/include/hypervisor-ifs/dom0_ops.h @@ -192,7 +192,7 @@ typedef struct dom0_settime_st #define DOM0_READCONSOLE 19 typedef struct dom0_readconsole_st { - char *str; + unsigned long str; unsigned int count; } dom0_readconsole_t; diff --git a/xen/include/xeno/console.h b/xen/include/xeno/console.h index aff4814382..589754d08a 100644 --- a/xen/include/xeno/console.h +++ b/xen/include/xeno/console.h @@ -51,7 +51,7 @@ typedef struct console_ring_st unsigned int len; } console_ring_t; -console_ring_t console_ring; +extern console_ring_t console_ring; void init_console_ring(); -long read_console_ring(char *str, unsigned int count); +long read_console_ring(unsigned long, unsigned int); -- 2.30.2